I. Field of the Disclosure
The technology of the disclosure relates generally to the embedded memory and particularly to providing command queuing therefore.
II. Background
Many mobile devices rely on flash memory to store data and/or software for use by the mobile device. Flash memory comes in two general flavors: fixed (embedded) and removable. Removable flash memory typically takes the form of a removable memory card and is commonly used in devices such as digital cameras or audio devices. Embedded flash memory is generally soldered or otherwise permanently affixed to the circuit board or other support medium within a mobile device.
The Joint Electron Device Engineering Council (JEDEC) is responsible for producing the embedded Multi-Media Card (eMMC) standards relating to one type of embedded flash memory. eMMC describes an architecture consisting of an embedded storage solution with Multi-Media Card interface, flash memory and controller, all in a small ball grid array (BGA) package. eMMC is currently a synchronous protocol where the host sends a command to read from the device or to write to the device. The device sends a response, and then a data block transfer occurs. At the completion of the data transfer, the host sends another command, receives another response, and another data transfer occurs. This synchronous command structure occurs for every data transfer into and out of the eMMC memory. Normally, software is involved with every command and response. Such software is typically a slow reacting entity, and software involvement in every command and response adds to the delay in effectuating the data transfers.
In contrast to the synchronous command structure of eMMC, another memory standard, the universal flash storage (UFS), adopts the well-known small computer system interface (SCSI) Architecture Model and command protocols supporting multiple commands with command queuing features and enabling a multi-thread programming paradigm. In practice, command queuing allows the host to send a plurality of tasks to the device in advance of execution of those tasks by the device. These tasks are stored in a queue in the device. The device then picks a task from the plurality of tasks it has received, executes the picked task, and informs the host of completion.
Command queuing allows for more efficient use of the bus on which the data transfer occurs because the software at the host and the device can work simultaneously rather than have to wait on one another. eMMC would benefit from command queuing and the improvement in efficiencies in use of the data bus. However, given that eMMC historically has not contemplated command queuing, there is a need to define how the host may learn of the status of the tasks in the queue at the device.